// node 13_闭包_对函数传递的参数求和.js

// 闭包  *
// arguments 在非箭头函数中可以使用arguments获取接收到的参数
// arguments.callee 这是一个指向arguments对象所在函数的指针

//方法1
//闭包
function operateSum(...params) {
    let fn = function () {
        return operateSum(...[...params,...arguments])   // return operateSum(...params.concat(...arguments))
    }
    // let fn = (...params2) => operateSum(...[...params,...params2])
    fn.getValue = ()=>{
        return params.reduce((pro,data)=>pro+data,0)
    }
    return fn
}

//测试1
let a = operateSum(1,2,3)
console.log(a.getValue())

let b = operateSum(1)(2)(3)
console.log(b.getValue())

let c = operateSum(1)(2)(3)(1,2,3)
console.log(c.getValue())